////继承最基本的特点
////（1）子类对象内部包含基类（子）对象
////（2）子类对象内部可以直接访问基类的非私有（公有/保护）成员
//#include <iostream>
//
//using namespace std;
//
//class Base {
//public:
//    int m_a;
//    void foo() { cout << "Base::foo()" << endl; }
//protected:
//    int m_b;
//    void bar() { cout << "Base::bar()" << endl; }
//private:
//    int m_c;
//    void hum() { cout << "Base::hum()" << endl; }
//};
////class Derived :public Base {
////class Derived:protected Base{
//class Derived:private Base{
//public:
//    void fun() {
//        m_a = 10; //ok
//        foo();//ok 以上两行代码证明子类内部可以访问基类的公有成员
//        m_b = 20;//ok
//        bar();//ok//以上两行代码证明子类内部可以访问基类的保护成员
//        //m_c = 30;//error
//        //hum();//error//以上良好代码证明子类内部不可以访问基类的私有成员
//    }
//private:
//    int m_d;
//};
//int main(void) {
//    Base b;// m_a m_b m_c
//    cout << "基类对象b的大小:" << sizeof(b) << endl;
//    Derived d;//基类子对象 m_d-->m_a m_b m_c m_d 证明子类对象内部包含基类子对象
//    cout << "子类对象d的大小:" << sizeof(d) << endl;
//    return 0;
//}